A computer network is a collection of interconnected computing devices that exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small units called packets. The packets are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Devices within the network, often referred to as routers, forward packets through the network according to destination addresses in the packets. To route packets through the network, a router maintains one or more tables of routing information that describe available routes through the network. Each route defines a path between two locations on the network. Upon receiving an incoming data packet, the router examines header information within the packet to identify the destination for the packet. Based on the header information, the router performs a lookup in the routing table (or a forwarding table derived from the routing table), selects an appropriate route for the packet and forwards the packet accordingly.
A router incorporates a number of hardware components to perform functions such as packet forwarding and route updates. In one architecture, the router includes a routing engine and a packet forwarding engine. The routing engine maintains one or more routing tables and, based on the routing tables, creates a forwarding table that describes how to forward an outbound data packet based on a destination address associated with the outbound data packets. The routing engine sends this forwarding table to the packet forwarding engine, which forwards packets between incoming and outgoing interfaces based on addresses contained in the packets.
In particular, the packet forwarding engine performs a lookup in the forwarding table based on the destination address associated with the packet and sends the packet out to the network using the appropriate outgoing interface. The packet forwarding engine may perform other functions, including, for example, filtering, sampling, policing, and rate limiting in connection with performing packet forwarding. In some architectures, hardware components for performing these and other functions are implemented using application specific integrated circuits (ASICs) distributed across multiple modules. These modules include, for example, a system control module, an interface card concentrator, and multiple interface cards directly connected to the interface card concentrator.
Distributing the ASICs across multiple modules provides flexibility to the user by allowing the user to purchase only as many interface card concentrators as needed. In addition, if a component, e.g., one of the ASICs, fails, the router can be serviced relatively inexpensively by replacing only the malfunctioning module. Because the interface cards are directly connected to the interface card concentrator, however, they are removed along with the concentrator before replacing the concentrator.
The multiple module architecture offers certain advantages in flexibility and serviceability, but it also has some drawbacks. For example, the system cost of the router is relatively high. In addition, processors in the modules communicate with each other using, for example, an Ethernet connection. While an Ethernet connection can communicate data at relatively high speeds, it still introduces some delay into the system.